$├2┼7...$├309 ╘HIS CODE SEGMENT IS A COMPLICATED ALGORITHM FOR SCANNING THE DRIVES REQUESTED BY UP TO 4 FILE NAMES (IE ╞╔╠─╥╓...╞╔╠─╥╓+3 [$4├6├...] AND GENERATING A FLAG BYTE. ┬IT 0 INDICATES IF ONE OR BOTH DRIVES NEED TO BE SEARCHED AND BITS 6-7 INDICATE THE DRIVE TO BE SEARCHED IF ONLY ONE DRIVE NUMBER IS ENTERED.
$├30┴ ╙AVE FLAG BYTE ON THE STACK.
$├30┬ ═ASK OFF BITS 2-7 AND SAVE RESULT (INDICATES # OF DRIVES TO BE SEARCHED, 0=>1 DRIVE, 1=>BOTH DRIVES) IN ─╥╓├╬╘ [$4├──].
$├310 ╥ESTORE FLAG BYTE FROM THE STACK AND PERFORM A LEFT SHIFT TO PUT BIT 7 IN THE .├ FLAG AND BIT 6 IN THE .╬ FLAG.
$├312 ╔F THE .╬ FLAG IS CLEAR THEN BRANCH TO ╧╙75 TO DETERMINE ON WHAT DRIVE THE SEARCH IS TO START.
$├314 ╘HE .╬ FLAG WAS SET WHICH MEANS THE DRIVE WAS EXPLICITLY SPECIFIED IN EACH FILE SPECIFICATION (EG 1:╪, 0:┴┬├, 0:╘┼╙╘). ╔N THIS CASE, OBTAIN THE DRIVE # FOR THE FIRST FILE ╞╔╠─╥╓ [$4├6├].
$├317 ╧╙35 ┴╬─ VALUE WITH $01, AND SAVE THE RESULT IN ─╥╓╬╒═ [$54] THE FIRST DRIVE TO BE SEARCHED.
$├31┬ ├HECK ─╥╓├╬╘ [$4├──] AND IF ZERO THEN BRANCH TO ╧╙60 TO SEARCH ONLY ONE DRIVE.
$├320 ╩╙╥ ┴╒╘╧╔ [$├54╞] TO CHECK THE DRIVE FOR A DISKETTE AND INITIALIZE IF NECESSARY.
$├323 ╔F THE .┌ FLAG IS SET UPON RETURN THEN EVERYTHING WORKED SO BRANCH TO ╧╙50.
$├325 ┼VEN THOUGH THIS DRIVE FAILED, WE ARE STILL O.K. IF THIS IS A 2 DRIVE SEARCH. ╩╙╥ ╘╧╟─╥╓ [$├2┴9] TO TOGGLE THE DRIVE NUMBER.
$├328 ╙ET ─╥╓├╬╘ [$4├──] TO ZERO TO INDICATE A SINGLE DRIVE SEARCH.
$├32─ ╩╙╥ ┴╒╘╧╔ [$├54╞] AND BRANCH TO ╧╙70 IF THIS DRIVE WAS O.K.
$├332 ╧╙45 ╙ET .┴ TO $74 (─╥╔╓┼ ╬╧╘ ╥┼┴─┘).
$├334 ╩╙╥ ├═─┼╥╥ [$├0╞─] TO GENERATE THE ERROR MESSAGE.
$├337 ╧╙50 ╩╙╥ ╘╧╟─╥╓ [$├2┴9] TO TOGGLE DRIVE # BACK TO THE ORIGINAL.
$├33┴ ╩╙╥ ┴╒╘╧╔ [$├54╞] TO INITIALIZE THE DRIVE.
$├33─ ╙AVE PROCESSOR STATUS (IE THE .┌ FLAG) ON THE STACK.
$├33┼ ╩╙╥ ╘╧╟─╥╓ [$├2┴9] TO SWITCH DRIVES.
$├341 ╥ESTORE THE PROCESSOR STATUS AND IF .┌ IS SET THEN ALL IS WELL SO BRANCH TO ╧╙70.
$├344 ╙ET ─╥╓├╬╘ [$4├──] TO ZERO AND BRANCH TO ╧╙70.
$├34┬ ╧╙60 ╩╙╥ ┴╒╘╧╔ [$├54╞] AND IF IT FAILED, BRANCH TO ╧╙45.
$├350 ╧╙70 ╩UMP TO ╙┼╘╠┼─ [$├003] TO TURN ON DRIVE ╠┼─.
$├353 ╧╙75 ╨UT .├ FLAG IN BIT 0 OF .┴ (THIS IS THE 1'ST DRIVE TO BE TRIED).
$├354 ╩UMP TO ╧╙35 TO CHECK FOR DRIVE READY.
║FP
╙├╚╘┬╠ ╙EARCH ╞LAG ╘ABLE
╬OTE: ╧NLY FIRST 7 ENTRIES SEEM TO BE USED.
╘HE MEANING OF THE BITS IN EACH TABLE ENTRY IS AS FOLLOWS:
┬IT 7 - ─RIVE # ON WHICH TO START SEARCH.
┬IT 6 - ┴ VALUE OF %1 MEANS THE DRIVE NUMBER WAS CODED AT THE START OF EACH FILE NAME AND THERE WAS A MIXTURE OF BOTH DRIVE NUMBERS.
┬ITS 5-1 - ╬OT USED.
┬IT 0 - # OF DRIVES (%0=>ONLY 1, %1=>BOTH).
$├357 $00 $80 $41 $01 $01 $01 $01
$├35┼ $81 $81 $81 $81 $42 $42 $42 $42
╠╧╧╦╒╨ ╠OOK UP ALL FILES AND GET DIRECTORY INFORMATION
$├366 ╩╙╥ ╧╨╘╙├╚ [$├2┼0] TO SET OPTIMAL DISK SEARCH.
$├369 ╠╦05 ├LEAR ─┼╠╔╬─ [$┴╞] TO INDICATE WE ARE ╬╧╘ LOOKING FOR A DELETED/UNUSED ENTRY.
$├36─ ╩╙╥ ╙╥├╚╙╘ [$├4┬┼] TO START THE DIRECTORY SEARCH.
$├370 ╧N RETURN, BRANCH TO ╠╦25 IF A VALID FILE WAS FOUND.
$├372 ╠╦10 ─ECREMENT ─╥╓├╬╘ [$4├──] TO SEE IF ANOTHER DRIVE CAN BE SEARCHED. ╔F SO THEN BRANCH TO ╠╦15.
$├377 ╬O MORE DRIVES TO SEARCH SO EXIT.
$├378 ╠╦15 ╩╙╥ ╙╫╔╘├╚ [$├3──] TO SWITCH TO THE OTHER DRIVE.
$├37┬ ┬RANCH TO ╠╦05 TO CONTINUE SEARCH ON OTHER DRIVE.
$├37─ ╠╦20 ╩╙╥ ╙┼┴╥├╚ [$├529] TO GET THE NEXT VALID FILE NAME IN THE DIRECTORY.
$├380 ╔F A VALID FILE NAME WAS NOT FOUND THEN BRANCH TO ╠╦30.
$├382 ╠╦25 ╩╙╥ ├╧═╨┴╥ [$├3┼┴] TO SEE IF THE ENTRY MATCHES A FILE NAME.
$├385 ╔F ╞╧╒╬─ [$4├┼0] = 0 (ALL FILES ╬╧╘ FOUND) THEN BRANCH TO ╠╦26.
$├38┴ ┴LL FILES HAVE BEEN FOUND SO RETURN.
$├38┬ ╠╦26 ╔F ┼╬╘╞╬─ [$4├┬5] < 0 (MEANS ENTRY DID NOT MATCH A FILE NAME) THEN BRANCH BACK TO ╠╦20 TO GET THE NEXT DIRECTORY ENTRY AND TRY AGAIN.
$├390 ╔F ┼╬╘╞╬─ [$4├┬5] >= 0 (MEANS ENTRY DID MATCH A FILE NAME) THEN BRANCH BACK TO ╠╦25 TO SEE IF THE SAME ENTRY MATCHES ANOTHER FILE NAME.
$├392 ╠╦30 ╔F ╞╧╒╬─ [$4├┼0] = 0 (ALL FILES ╬╧╘ FOUND) THEN BRANCH BACK TO ╠╦10 TO SEE IF ANOTHER DRIVE IS AVAILABLE.
$├397 ┴LL FILES HAVE BEEN FOUND SO RETURN.
╞╞╥┼ ╞IND NEXT DIRECTORY ENTRY MATCHING ANY FILE NAME
$├398 ╩╙╥ ╙╙╥┼ [$├516] TO GET THE NEXT DIRECTORY BLOCK.
$├39┬ ╔F NO MORE BLOCKS AVAILABLE THEN BRANCH TO ╞╞10.